DB2 তে Joins এবং Nested Queries এমন দুটি গুরুত্বপূর্ণ কৌশল, যা ডেটাবেসে একাধিক টেবিলের ডেটা একত্রিত এবং জটিল ডেটাবেস কুয়েরি তৈরি করতে ব্যবহৃত হয়। Advanced Joins এবং Nested Queries ব্যবহার করে, আপনি বিভিন্ন ধরনের সম্পর্কিত ডেটা আরও গভীরভাবে বিশ্লেষণ করতে পারেন।
এখানে DB2-তে Advanced Joins এবং Nested Queries এর ব্যবহার এবং এগুলোর কার্যকারিতা ব্যাখ্যা করা হলো।
Joins হল একটি SQL কৌশল যা দুটি বা তার বেশি টেবিলের মধ্যে সম্পর্ক স্থাপন করে এবং সম্পর্কিত ডেটা একত্রিত করতে ব্যবহৃত হয়। DB2 তে বিভিন্ন ধরনের Advanced Joins ব্যবহৃত হয় যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, SELF JOIN, এবং CROSS JOIN।
INNER JOIN হল সবচেয়ে সাধারণ ধরনের JOIN, যা শুধুমাত্র সেই রেকর্ডগুলি ফেরত দেয়, যেখানে দুটি টেবিলের মধ্যে ম্যাচিং রেকর্ড থাকে।
উদাহরণ:
SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;
এটি employees এবং departments টেবিলের মধ্যে department_id
কলামের মাধ্যমে সম্পর্ক স্থাপন করে এবং সেইসব কর্মচারীদের নাম ও বিভাগের নাম ফিরিয়ে দেয়, যাদের department_id
ম্যাচ করে।
LEFT JOIN বা LEFT OUTER JOIN দুটি টেবিলের মধ্যে সম্পর্ক স্থাপন করে, এবং বামপাশের টেবিলের সমস্ত রেকর্ড ফেরত দেয়, এমনকি যদি ডানপাশের টেবিলে মিল না থাকে তাও। যেসব রেকর্ডের ডানপাশের টেবিলে মিল নেই, সেখানে NULL
ফেরত আসবে।
উদাহরণ:
SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;
এটি employees টেবিলের সমস্ত রেকর্ড ফেরত দিবে, এবং যেখানে departments টেবিলের department_id
মেলে, সেখানে বিভাগের নাম প্রদর্শিত হবে। যদি কোন মিল না থাকে, তবে department_name
কলামে NULL
ফেরত আসবে।
RIGHT JOIN বা RIGHT OUTER JOIN LEFT JOIN এর বিপরীত। এটি ডানপাশের টেবিলের সমস্ত রেকর্ড ফেরত দেয়, এমনকি বামপাশের টেবিলে মিল না থাকলেও। যেখানে মিল না থাকবে সেখানে NULL
ফেরত আসবে।
উদাহরণ:
SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.department_id;
এটি departments টেবিলের সমস্ত রেকর্ড ফেরত দেবে, এবং যেগুলোর সাথে employees টেবিলের department_id
মেলে, সেখানে কর্মচারীর নাম প্রদর্শিত হবে। অন্যথায় employee_id
এবং first_name
কলামে NULL
দেখানো হবে।
FULL OUTER JOIN দুটি টেবিলের সকল রেকর্ড ফেরত দেয়, এবং যেখানে মিল না থাকে সেখানে NULL
ফিরিয়ে দেয়।
উদাহরণ:
SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
FULL OUTER JOIN departments
ON employees.department_id = departments.department_id;
এটি employees এবং departments টেবিলের সমস্ত রেকর্ড ফেরত দেবে, যেখানে মিল থাকবে সেখানে সম্পর্কিত তথ্য দেখাবে, আর যেগুলোর মিল নেই সেগুলোর জন্য NULL
প্রদর্শিত হবে।
SELF JOIN হল একটি টেবিলের মধ্যে সম্পর্ক স্থাপন করা যেখানে একই টেবিলের দুটি রেকর্ডের মধ্যে সম্পর্ক স্থাপন করা হয়। এটি সাধারণত alias ব্যবহার করে করা হয়।
উদাহরণ:
SELECT e1.employee_id, e1.first_name, e2.first_name AS manager_name
FROM employees e1
JOIN employees e2
ON e1.manager_id = e2.employee_id;
এটি employees টেবিলের মধ্যে এমন একটি সম্পর্ক তৈরি করে যেখানে এক কর্মচারী অন্য কর্মচারীকে manager_id দ্বারা পরিচালনা করছে।
CROSS JOIN দুটি টেবিলের মধ্যে সমস্ত সম্ভাব্য কম্বিনেশন ফেরত দেয়, অর্থাৎ এটি Cartesian Product তৈরি করে। এতে কোন শর্তের ভিত্তিতে সম্পর্ক স্থাপন করা হয় না।
উদাহরণ:
SELECT employees.first_name, departments.department_name
FROM employees
CROSS JOIN departments;
এটি employees এবং departments টেবিলের মধ্যে সমস্ত সম্ভাব্য কম্বিনেশন দেখাবে।
Nested Queries বা Subqueries হল কুয়েরির মধ্যে অন্য কুয়েরি ব্যবহার করা। এটি সাধারণত WHERE, FROM, SELECT, বা HAVING ক্লজে ব্যবহৃত হয় এবং এটি ডেটাবেসের মধ্যে আরও জটিল এবং শক্তিশালী অনুসন্ধান করার জন্য ব্যবহৃত হয়।
WHERE ক্লজে Subquery ব্যবহার করে, আপনি মূল কুয়েরির ফলাফল নির্ধারণ করতে পারেন।
উদাহরণ:
SELECT first_name, last_name
FROM employees
WHERE department_id = (
SELECT department_id
FROM departments
WHERE department_name = 'Sales'
);
এটি Sales
বিভাগের কর্মচারীদের নাম এবং পদবি ফেরত দেবে। এখানে ভিতরের কুয়েরি প্রথমে Sales
বিভাগের department_id
নির্বাচন করবে এবং বাইরের কুয়েরি সেই বিভাগের কর্মচারীদের নাম ফিরিয়ে দেবে।
FROM ক্লজে Subquery ব্যবহার করে আপনি একটি ভার্চুয়াল টেবিল তৈরি করতে পারেন এবং তারপরে সেটির উপর কাজ করতে পারেন।
উদাহরণ:
SELECT department_name, avg_salary
FROM (
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
) AS department_avg_salary;
এখানে প্রথমে একটি সাবকুয়েরি employees
টেবিলের department_id
অনুযায়ী গড় বেতন বের করবে এবং তারপরে বাইরের কুয়েরি সেই ফলাফলকে প্রদর্শন করবে।
Correlated Subquery এমন একটি সাবকুয়েরি যা বাইরের কুয়েরির প্রতিটি রেকর্ডের জন্য এক্সিকিউট হয়। এখানে বাইরের কুয়েরি সাবকুয়েরির মধ্যে থাকা মানকে ব্যবহার করে।
উদাহরণ:
SELECT employee_id, first_name
FROM employees e
WHERE salary > (
SELECT AVG(salary)
FROM employees
WHERE department_id = e.department_id
);
এখানে বাইরের কুয়েরি employees
টেবিলের প্রতিটি কর্মচারীর জন্য, তাদের বিভাগের গড় বেতনের চেয়ে বেশি বেতন পাওয়া কর্মচারীদের ফিরিয়ে দেবে।
Advanced Joins এবং Nested Queries DB2 তে ডেটাবেসের মধ্যে সম্পর্ক স্থাপন এবং জটিল অনুসন্ধান পরিচালনা করার জন্য ব্যবহৃত শক্তিশালী টেকনিক। Advanced Joins এর মাধ্যমে একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করা হয়, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, SELF JOIN, এবং CROSS JOIN। Nested Queries বা Subqueries কুয়েরির মধ্যে অন্য কুয়েরি ব্যবহার করে আরও উন্নত ডেটা অনুসন্ধান করতে সাহায্য করে। এই কৌশলগুলি DB2 তে ডেটা ম্যানিপুলেশন এবং বিশ্লেষণকে আরও সহজ এবং কার্যকরী করে তোলে।
common.read_more